home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / caty16.zip / CATYNUM.PAS < prev    next >
Pascal/Delphi Source File  |  1993-02-02  |  12KB  |  335 lines

  1. UNIT CATYNUM; (* Large numeral routines - D. J. Wilke 07/20/91 *)
  2. (* Generates 7X5 large numeral set for frequency displays *)
  3.  
  4. INTERFACE
  5.  
  6. USES CRT, DOS, CATYGLO;
  7.  
  8. PROCEDURE BuildDigit (Digit : STRING; XNum,YNum : INTEGER);
  9. PROCEDURE NumeralPos (XNum,YNum : INTEGER; BigFreq : STRING);
  10. PROCEDURE NumeralOne (XNum,YNum : INTEGER);
  11. PROCEDURE NumeralTwo (XNum,YNum : INTEGER);
  12. PROCEDURE NumeralThree (XNum,YNum : INTEGER);
  13. PROCEDURE NumeralFour (XNum,YNum : INTEGER);
  14. PROCEDURE NumeralFive (XNum,YNum : INTEGER);
  15. PROCEDURE NumeralSix (XNum,YNum : INTEGER);
  16. PROCEDURE NumeralSeven (XNum,YNum : INTEGER);
  17. PROCEDURE NumeralEight (XNum,YNum : INTEGER);
  18. PROCEDURE NumeralNine (XNum,YNum : INTEGER);
  19. PROCEDURE NumeralZero (XNum,YNum : INTEGER);
  20. PROCEDURE MhzSep (XNum,YNum,Den : INTEGER);
  21. PROCEDURE BigNumerals (XNum,YNum : INTEGER);
  22.  
  23. IMPLEMENTATION
  24.  
  25. (*═══════════════════════════════════════════════════════════════════════*)
  26. PROCEDURE BuildDigit (Digit : STRING; XNum,YNum : INTEGER);
  27.  
  28. VAR
  29.    DigitID,Result : INTEGER;
  30.  
  31. BEGIN
  32.    VAL(Digit,DigitID,Result);
  33.    CASE DigitID OF
  34.       1 : NumeralOne(XNum,YNum);
  35.       2 : NumeralTwo(XNum,YNum);
  36.       3 : NumeralThree(XNum,YNum);
  37.       4 : NumeralFour(XNum,YNum);
  38.       5 : NumeralFive(XNum,YNum);
  39.       6 : NumeralSix(XNum,YNum);
  40.       7 : NumeralSeven(XNum,YNum);
  41.       8 : NumeralEight(XNum,YNum);
  42.       9 : NumeralNine(XNum,YNum);
  43.       0 : NumeralZero(XNum,YNum);
  44.    END; (* CASE DigitID OF *)
  45. END; (* BuildDigit *)
  46. (*═══════════════════════════════════════════════════════════════════════*)
  47. PROCEDURE NumeralPos (XNum,YNum : INTEGER; BigFreq : STRING);
  48.  
  49. VAR
  50.    Digit : STRING;
  51.  
  52. BEGIN
  53.    FOR Index := 1 to LENGTH(BigFreq) DO BEGIN
  54.       Digit := COPY(BigFreq,Index,1);
  55.       IF Digit <> ' ' THEN BEGIN
  56.          CASE Index OF
  57.             1 : BEGIN
  58.                    XNum := 2;
  59.                    BuildDigit(Digit,XNum,YNum);
  60.                 END;
  61.             2 : BEGIN
  62.                    XNum := 12;
  63.                    BuildDigit(Digit,XNum,YNum);
  64.                 END;
  65.             3 : BEGIN
  66.                    XNum := 21;
  67.                    BuildDigit(Digit,XNum,YNum);
  68.                 END;
  69.             4 : BEGIN
  70.                    XNum := 29;
  71.                    MhzSep(XNum,YNum,1);
  72.                 END;
  73.             5 : BEGIN
  74.                    XNum := 32;
  75.                    BuildDigit(Digit,XNum,YNum);
  76.                 END;
  77.             6 : BEGIN
  78.                    XNum := 41;
  79.                    BuildDigit(Digit,XNum,YNum);
  80.                 END;
  81.             7 : BEGIN
  82.                    XNum := 50;
  83.                    BuildDigit(Digit,XNum,YNum);
  84.                    XNum := 58;
  85.                    MhzSep(XNum,YNum,4);
  86.                 END;
  87.             8 : BEGIN
  88.                    XNum := 61;
  89.                    BuildDigit(Digit,XNum,YNum);
  90.                 END;
  91.             9 : BEGIN
  92.                    XNum := 70;
  93.                    BuildDigit(Digit,XNum,YNum);
  94.                 END;
  95.          END; (* CASE *)
  96.       END; (* IF Digit *)
  97.    END; (* FOR Index *)
  98. END; (* NumeralPos *)
  99.  
  100. (*═══════════════════════════════════════════════════════════════════════*)
  101. PROCEDURE NumeralOne(XNum,YNum : INTEGER);
  102.  
  103. BEGIN
  104.    GOTOXY(XNum +2,YNum);
  105.    WRITE(CHR(219)+CHR(219)+CHR(219));      (* Top row *)
  106.    FOR Ybit := YNum +1 TO YNum +4 DO BEGIN (* Rows 2 thru 5 *)
  107.       GOTOXY(XNum +3,Ybit);
  108.       WRITE(CHR(219)+CHR(219));
  109.    END; (* FOR Index *)
  110. END; (* NumeralOne *)
  111.  
  112. (*═══════════════════════════════════════════════════════════════════════*)
  113. PROCEDURE NumeralTwo (XNum,YNum : INTEGER);
  114.  
  115. BEGIN
  116.    Ybit := YNum;                          (* Row 1 *)
  117.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  118.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  119.    END; (* FOR Xbit *)
  120.    Ybit := Ybit +1;                       (* Row 2 *)
  121.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  122.    Ybit := Ybit +1;                       (* Row 3 *)
  123.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  124.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  125.    END; (* FOR Xbit *)
  126.    Ybit := Ybit +1;                       (* Row 4 *)
  127.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  128.    Ybit := Ybit +1;                       (* Row 5 *)
  129.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  130.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  131.    END; (* FOR Xbit *)
  132. END; (* NumeralTwo *)
  133.  
  134. (*═══════════════════════════════════════════════════════════════════════*)
  135. PROCEDURE NumeralThree (XNum,YNum : INTEGER);
  136.  
  137. BEGIN
  138.    Ybit := YNum;                          (* Row 1 *)
  139.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  140.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  141.    END; (* FOR Xbit *)
  142.    Ybit := Ybit +1;                       (* Row 2 *)
  143.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  144.    Ybit := Ybit +1;                       (* Row 3 *)
  145.    FOR Xbit := XNum +2 TO XNum +6 DO BEGIN
  146.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  147.    END; (* FOR Xbit *)
  148.    Ybit := Ybit +1;                       (* Row 4 *)
  149.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  150.    Ybit := Ybit +1;                       (* Row 5 *)
  151.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  152.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  153.    END; (* FOR Xbit *)
  154. END; (* NumeralThree *)
  155.  
  156. (*═══════════════════════════════════════════════════════════════════════*)
  157. PROCEDURE NumeralFour (XNum,YNum : INTEGER);
  158.  
  159. BEGIN
  160.    Ybit := YNum;                          (* Row 1 *)
  161.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  162.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  163.    Ybit := Ybit +1;                       (* Row 2 *)
  164.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  165.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  166.    Ybit := Ybit +1;                       (* Row 3 *)
  167.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  168.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  169.    END; (* FOR Xbit *)
  170.    Ybit := Ybit +1;                       (* Row 4 *)
  171.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  172.    Ybit := Ybit +1;                       (* Row 5 *)
  173.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  174. END; (* NumeralFour *)
  175.  
  176. (*═══════════════════════════════════════════════════════════════════════*)
  177. PROCEDURE NumeralFive (XNum,YNum : INTEGER);
  178.  
  179. BEGIN
  180.    Ybit := YNum;                          (* Row 1 *)
  181.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  182.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  183.    END; (* FOR Xbit *)
  184.    Ybit := Ybit +1;                       (* Row 2 *)
  185.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  186.    Ybit := Ybit +1;                       (* Row 3 *)
  187.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  188.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  189.    END; (* FOR Xbit *)
  190.    Ybit := Ybit +1;                       (* Row 4 *)
  191.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  192.    Ybit := Ybit +1;                       (* Row 5 *)
  193.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  194.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  195.    END; (* FOR Xbit *)
  196. END; (* NumeralFive *)
  197.  
  198. (*═══════════════════════════════════════════════════════════════════════*)
  199. PROCEDURE NumeralSix (XNum,YNum : INTEGER);
  200.  
  201. BEGIN
  202.    Ybit := YNum;                          (* Row 1 *)
  203.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  204.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  205.    END; (* FOR Xbit *)
  206.    Ybit := Ybit +1;                       (* Row 2 *)
  207.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  208.    Ybit := Ybit +1;                       (* Row 3 *)
  209.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  210.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  211.    END; (* FOR Xbit *)
  212.    Ybit := Ybit +1;                       (* Row 4 *)
  213.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  214.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  215.    Ybit := Ybit +1;                       (* Row 5 *)
  216.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  217.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  218.    END; (* FOR Xbit *)
  219. END; (* NumeralSix *)
  220.  
  221. (*═══════════════════════════════════════════════════════════════════════*)
  222. PROCEDURE NumeralSeven (XNum,YNum : INTEGER);
  223.  
  224. BEGIN
  225.    Ybit := YNum;                             (* Row 1 *)
  226.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  227.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  228.    END; (* FOR Xbit *)
  229.    FOR Ybit := YNum +1 TO YNum +4 DO BEGIN;  (* Rows 2 thru 5 *)
  230.       GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  231.    END (* FOR Ybit *)
  232. END; (* NumeralSeven *)
  233.  
  234. (*═══════════════════════════════════════════════════════════════════════*)
  235. PROCEDURE NumeralEight (XNum,YNum : INTEGER);
  236.  
  237. BEGIN
  238.    Ybit := YNum;                          (* Row 1 *)
  239.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  240.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  241.    END; (* FOR Xbit *)
  242.    Ybit := Ybit +1;                       (* Row 2 *)
  243.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  244.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  245.    Ybit := Ybit +1;                       (* Row 3 *)
  246.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  247.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  248.    END; (* FOR Xbit *)
  249.    Ybit := Ybit +1;                       (* Row 4 *)
  250.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  251.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  252.    Ybit := Ybit +1;                       (* Row 5 *)
  253.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  254.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  255.    END; (* FOR Xbit *)
  256. END; (* NumeralEight *)
  257.  
  258. (*═══════════════════════════════════════════════════════════════════════*)
  259. PROCEDURE NumeralNine (XNum,YNum : INTEGER);
  260.  
  261. BEGIN
  262.    Ybit := YNum;                          (* Row 1 *)
  263.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  264.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  265.    END; (* FOR Xbit *)
  266.    Ybit := Ybit +1;                       (* Row 2 *)
  267.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  268.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  269.    Ybit := Ybit +1;                       (* Row 3 *)
  270.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  271.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  272.    END; (* FOR Xbit *)
  273.    Ybit := Ybit +1;                       (* Row 4 *)
  274.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  275.    Ybit := Ybit +1;                       (* Row 5 *)
  276.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  277.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  278.    END; (* FOR Xbit *)
  279. END; (* NumeralNine *)
  280.  
  281. (*═══════════════════════════════════════════════════════════════════════*)
  282. PROCEDURE NumeralZero (XNum,YNum : INTEGER);
  283.  
  284. BEGIN
  285.    Ybit := YNum;                          (* Row 1 *)
  286.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  287.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  288.    END; (* FOR Xbit *)
  289.    Ybit := Ybit +1;                       (* Row 2 *)
  290.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  291.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  292.    Ybit := Ybit +1;                       (* Row 3 *)
  293.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  294.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  295.    Ybit := Ybit +1;                       (* Row 4 *)
  296.    GOTOXY(XNum,Ybit); WRITE(CHR(219)+CHR(219));
  297.    GOTOXY(XNum +5,Ybit); WRITE(CHR(219)+CHR(219));
  298.    Ybit := Ybit +1;                       (* Row 5 *)
  299.    FOR Xbit := XNum TO XNum +6 DO BEGIN
  300.       GOTOXY(Xbit,Ybit); WRITE(CHR(219));
  301.    END; (* FOR Xbit *)
  302. END; (* NumeralZero *)
  303.  
  304. (*═══════════════════════════════════════════════════════════════════════*)
  305. PROCEDURE MhzSep (XNum,YNum,Den : INTEGER);
  306.  
  307. BEGIN
  308.    Ybit := YNum +4;                       (* Row 5 *)
  309.    Xbit := XNum;
  310.    GOTOXY(Xbit,Ybit);
  311.    IF Den = 1 THEN
  312.       WRITE(CHR(219)+CHR(219));
  313.    IF Den = 2 THEN
  314.       WRITE(CHR(178)+CHR(178));
  315.    IF Den = 3 THEN
  316.       WRITE(CHR(177)+CHR(177));
  317.    IF Den = 4 THEN
  318.       WRITE(CHR(176)+CHR(176));
  319. END; (* NumeralZero *)
  320.  
  321. (*═══════════════════════════════════════════════════════════════════════*)
  322. PROCEDURE BigNumerals (XNum,YNum : INTEGER);
  323.  
  324. VAR
  325.    BigFreq : STRING;
  326.  
  327. BEGIN
  328.    STR((SelFreq /100000):9:5,BigFreq);
  329.    TEXTCOLOR(SFG); TEXTBACKGROUND(DBG);      (* Big numeral colors *)
  330.    NumeralPos(XNum,YNum,BigFreq);
  331.    TEXTCOLOR(DFG); TEXTBACKGROUND(DBG);      (* Default screen colors *)
  332. END; (* BigNumerals *)
  333. END. (* of UNIT CATYNUM *)
  334.  
  335.